package prjtgl.metier.comptes;

import javax.persistence.*;
import prjtgl.bdd.comptes.HRecruteur;
import prjtgl.bdd.paiement.HPorteMonnaie;
import prjtgl.metier.Application;
import prjtgl.metier.comptes.profil_societe.Societe;
import prjtgl.metier.paiement.PorteMonnaie;
import prjtgl.util.Email;

/**
 * Recruteur
 * @author Lucie
 */
@Entity
@PrimaryKeyJoinColumn(name="id")
@Table(name="recruteur")
public class Recruteur extends Utilisateur{
	/**
	 * VRAI si le recruteur a ete confirme par l'administrateur, FAUX sinon
	 */
	private boolean confirme;
	/**
	 * Porte monnaie du recruteur
	 */
	private PorteMonnaie porteMonnaie;
	/**
	 * Societe auquelle appartient le recruteur
	 */
	private Societe societe;

	/** Description de sa societe */
	private String description;
	
	/**
	 * Ajouter un nombre de credits donne au porte monnaie du recruteur
	 * @param credits Nombre de credits a ajouter
	 */
	public void ajouterCredits(int credits){
		porteMonnaie.recharger(credits);
	}
	
	/**
	 * Prendre contact avec un membre
	 * @param cible Membre a contacter
	 * @param texteMail Message a transmettre
	 */
	public void prendreContact(Membre cible, String texteMail){
               Email.envoyer(cible.getEmail(), "PRISE DE CONTACT ", texteMail);
	}

	/**
	 * Indique si le recruteur est confirme ou non
	 * @return VRAI si le recruteur est confirme, FAUX sinon
	 */
	@Column(name="confirme")
	public boolean isConfirme() {
		return confirme;
	}

	@Column(name="description")
	public String getDescription(){
		return description;
	}
	
	public void setDescription(String description){
		this.description = description;
	}
	
	/**
	 * Mutateur de la confirmation du recruteur
	 * @param confirme VRAI si le recruteur est confirme, FAUX sinon
	 */
	public void setConfirme(boolean confirme) {
		this.confirme = confirme;
	}

	/**
	 * Retourne le porte monnaie du recruteur
	 * @return Porte monnaie
	 */
	@OneToOne(fetch= FetchType.LAZY, cascade= CascadeType.ALL)
	@JoinColumn(name="id")
	public PorteMonnaie getPorteMonnaie() {
		return porteMonnaie;
	}

	/**
	 * Mutateur du porte monnaie du recruteur
	 * @param porteMonnaie Nouveau porte monnaie
	 */
	public void setPorteMonnaie(PorteMonnaie porteMonnaie) {
		this.porteMonnaie = porteMonnaie;
	}

	/**
	 * Retourne la societe du recruteur
	 * @return Societe
	 */
	@ManyToOne(cascade= CascadeType.ALL,fetch= FetchType.LAZY)
	@JoinColumn(name="id_societe")
	public Societe getSociete() {
		return societe;
	}

	/**
	 * Mutateur de la societe du recruteur
	 * @param societe Nouvelle societe du recruteur
	 */
	public void setSociete(Societe societe) {
		this.societe = societe;
	}
	
	
}
